import { set } from 'lodash'

/**
 * 格式化GRID中展示图表时的样式
 */
function formatViewStyle(showPosition, text) {
  try {
    let style = JSON.parse(text)

    set(style, 'text.show', false) // 隐藏标题
    if (showPosition === 'in:grid') {
      set(style, 'xAxis.show', false) // 隐藏X轴
      set(style, 'yAxis.show', false) // 隐藏Y轴
      set(style, 'legend.show', false) // 隐藏图例
    }

    return JSON.stringify(style)
  } catch (error) {
    console.log('formatViewStyleInGrid error=', error)
  }

  // 出错时直接原路返回
  return text
}

/**
 * 格式化GRID中展示图表时的额外属性
 */
function formatViewCustomAttr(text) {
  try {
    let attr = JSON.parse(text)

    // console.log('formatViewCustomAttr attr=', attr)
    // 固定线上的点格式
    set(attr, 'size.lineSymbol', 'circle')
    set(attr, 'size.lineSymbolSize', 8)

    return JSON.stringify(attr)
  } catch (error) {
    console.log('formatViewStyleInGrid error=', error)
  }

  // 出错时直接原路返回
  return text
}

/**
 * 格式化GRID展示中的图表样式
 * @param {*} data
 * @returns
 */
export function formatRspDataOfView(showPosition, data) {
  const ret = data

  try {
    if (ret.customStyle) {
      ret.customStyle = formatViewStyle(showPosition, ret.customStyle)
    }
    if (showPosition === 'in:grid') {
      if (ret.customAttr) {
        ret.customAttr = formatViewCustomAttr(ret.customAttr)
      }
    } else if (showPosition === 'as:bar') {
      ret.type = 'bar'
    } else if (showPosition === 'as:pie') {
      ret.type = 'pie'
    } else if (showPosition === 'as:line') {
      ret.type = 'line'
    }
  } catch (error) {
    console.log('formatRspDataOfView error=', error)
  }

  return ret
}
